package models

import (
	"time"
)

type Alerts struct {
	Id           int       `json:"id" xorm:"not null pk autoincr comment('唯一标识每条报警记录') INT(11)"`
	UserId       int       `json:"user_id" xorm:"not null comment('用户ID') INT(11)"`
	AlertType    string    `json:"alert_type" xorm:"comment('报警类型') VARCHAR(50)"`
	AlertMessage string    `json:"alert_message" xorm:"comment('报警信息') TEXT"`
	AlertDate    time.Time `json:"alert_date" xorm:"created 'alert_date'"`
}

// 用户电费信息表
type EleInfo struct {
	Id          int     `json:"id" xorm:"not null pk autoincr comment('唯一标识每条用户电费信息记录') INT(11)"`
	EleSum      float32 `json:"ele_sum" xorm:"not null comment('用户总的电费金额') FLOAT"`
	EleStatus   string  `json:"ele_status" xorm:"not null comment('用户电费状态（如已缴费、未缴费、欠费等）') VARCHAR(32)"`
	EleBalance  float32 `json:"ele_balance" xorm:"not null comment('用户当前的电费余额') FLOAT"`
	EleUsemoney float32 `json:"ele_use_money" xorm:"not null comment('用户已经使用的电费金额') FLOAT"`
}

// 电费账单表
type ElectricityBills struct {
	Id               int       `json:"id" xorm:"not null pk autoincr comment('唯一标识每条电费账单记录') INT(11)"`
	UserId           int       `json:"user_id" xorm:"not null comment('关联用户的ID') INT(11)"`
	EleId            string    `json:"ele_id" xorm:"comment('电费账单的唯一标识符') VARCHAR(64)"`
	BillDate         time.Time `json:"bill_date" xorm:"not null comment('账单日期') DATETIME"`
	ElectricityUsage float32   `json:"electricity_usage" xorm:"not null comment('用电量') FLOAT"`
	Amount           float32   `json:"amount" xorm:"not null comment('账单金额') FLOAT"`
	ElePayment       float32   `json:"ele_payment" xorm:"not null comment('缴费前的电费余额') FLOAT"`
	EleBalanceBefore float32   `json:"ele_balance_before" xorm:"not null comment('缴费前的电费余额（备用字段）') FLOAT"`
	EleBalanceNow    float32   `json:"ele_balance_now" xorm:"not null comment('缴费后的电费余额') FLOAT"`
	PayTime          time.Time `json:"pay_time" xorm:"created 'pay_time'"`
	Status           string    `json:"status" xorm:"default 'unpaid' comment('账单状态，默认未支付') VARCHAR(50)"`
	DueDate          time.Time `json:"due_date" xorm:"not null comment('账单到期日期') DATETIME"`
}

type Notifications struct {
	Id        int       `json:"id" xorm:"not null pk autoincr comment('唯一标识每条通知记录') INT(11)"`
	UserId    int       `json:"user_id" xorm:"not null comment('用户ID') INT(11)"`
	Message   string    `json:"message" xorm:"not null comment('通知内容') TEXT"`
	IsRead    int       `json:"is_read" xorm:"default 0 comment('是否已读，0为未读，1为已读') TINYINT(1)"`
	Timestamp time.Time `json:"timestamp" xorm:"created 'timestamp'"`
}

//电费信息表
type Payments struct {
	Id            int       `json:"id" xorm:"not null pk autoincr comment('唯一标识每条支付记录') INT(11)"`
	UserId        int       `json:"user_id" xorm:"not null comment('用户ID') INT(11)"`
	BillId        int       `json:"bill_id" xorm:"not null comment('账单ID') INT(11)"`
	Amount        float32   `json:"amount" xorm:"not null comment('支付金额') FLOAT"`
	PaymentMethod string    `json:"payment_method" xorm:"comment('支付方式') VARCHAR(50)"`
	PaymentDate   time.Time `json:"payment_date" xorm:"created 'payment_date'"`
}

type RealTimeUsage struct {
	Id               int       `json:"id" xorm:"not null pk autoincr comment('唯一标识每条实时用电记录') INT(11)"`
	UserId           int       `json:"user_id" xorm:"not null comment('用户ID') INT(11)"`
	ElectricityUsage float32   `json:"electricity_usage" xorm:"not null comment('实时用电量') FLOAT"`
	Timestamp        time.Time `json:"timestamp" xorm:"created 'timestamp'"`
}

type SchemaMigrations struct {
	Version int64 `json:"version" xorm:"not null pk BIGINT(20)"`
	Dirty   int   `json:"dirty" xorm:"not null TINYINT(1)"`
}

type UsageReports struct {
	Id         int       `json:"id" xorm:"not null pk autoincr comment('唯一标识每条用电分析报告记录') INT(11)"`
	UserId     int       `json:"user_id" xorm:"not null comment('用户ID') INT(11)"`
	ReportDate time.Time `json:"report_date" xorm:"created 'report_date'"`
	Report     string    `json:"report" xorm:"not null comment('报告内容') TEXT"`
}

type UserProfile struct {
	Id          int    `json:"user_id" xorm:"not null pk comment('用户ID，引用users表的id字段') INT(11)"`
	Name        string `json:"name" xorm:"comment('用户姓名') VARCHAR(255)"`
	ContactInfo string `json:"contact_info" xorm:"comment('用户联系方式') VARCHAR(255)"`
	Address     string `json:"address" xorm:"comment('用户地址') VARCHAR(255)"`
}

type Userinfo struct {
	Id          int       `json:"id" xorm:"not null pk autoincr comment('唯一标识每条用户记录') INT(11)"`
	Username    string    `json:"username" xorm:"not null comment('用户名，唯一') unique VARCHAR(255)"`
	Password    string    `json:"password" xorm:"not null comment('用户密码') VARCHAR(255)"`
	Email       string    `json:"email" xorm:"not null comment('用户邮箱') unique VARCHAR(255)"`
	Name        string    `json:"name" xorm:"comment('用户姓名') VARCHAR(255)"`
	ContactInfo string    `json:"contact_info" xorm:"comment('用户联系方式') VARCHAR(255)"`
	Address     string    `json:"address" xorm:"comment('用户地址') VARCHAR(255)"`
	Role        string    `json:"role" xorm:"default 'user' comment('用户角色，默认是普通用户') VARCHAR(50)"`
	CreatedAt   time.Time `json:"created_at" xorm:"created 'created_at'"`
}
